package com.sktlab.bizconfmobile.mina;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.StringTokenizer;

import com.sktlab.bizconfmobile.util.CharSetUtil;
import com.sktlab.bizconfmobile.util.Util;

public class MinaMsg {
	
	public static final String TAG = "MinaMsg";
	
	protected String separator = "~";
	
	protected String ssnId;
	protected int seq;
	protected String msgId;
	protected ArrayList<String> msgData;
	
	
	public MinaMsg() {
		
		ssnId = "0";
		seq = 0;
		msgId = "null";
		msgData = new ArrayList<String>();
	}
	
	public MinaMsg(String rsp) {
		
		StringTokenizer tokenizer = new StringTokenizer(rsp, separator);
		
		msgData = new ArrayList<String>();
		
		do{
			
			if(tokenizer.hasMoreElements()) {
				
				ssnId = tokenizer.nextToken();
			}
			
			if(tokenizer.hasMoreTokens()) {
				
				seq = Integer.valueOf(tokenizer.nextToken());
			}
			
			if(tokenizer.hasMoreTokens()) {
				
				msgId = tokenizer.nextToken();
			}
			
			while(tokenizer.hasMoreTokens()) {
							
				msgData.add(tokenizer.nextToken());
			}
			
		}while(false);		
	}
	
	public void clearMsgData() {
		
		if(!Util.isEmpty(msgData)) {
			
			msgData.clear();
		}
	}
	
	public MinaMsg appendMsgData(String data) {
	
		if(!Util.isEmpty(msgData)){
			
			msgData.add(data);
		}
		
		return this;
	}
	
	public String getSsnId() {
		return ssnId;
	}


	public void setSsnId(String ssnId) {
		this.ssnId = ssnId;
	}

	public int getSeq() {
		return seq;
	}


	public void setSeq(int seq) {
		this.seq = seq;
	}


	public String getMsgId() {
		return msgId;
	}


	public void setMsgId(String msgId) {
		
		this.msgId = msgId;
	}


	public ArrayList<String> getMsgData() {
		return msgData;
	}


	public void setMsgData(ArrayList<String> msgData) {
		this.msgData = msgData;
	}

	/**
	 * to guarantee this method work right ,you should make sure the msg data's order correspond to customer's api doc
	 */
	@Override
	public String toString() {
		
		String msg = 
				ssnId + separator + 
				seq + separator + 
				msgId;
		
		StringBuffer sb = new StringBuffer();
		
		sb.append(msg);
		
		for(String data : msgData) {
			
			sb.append(separator).append(data);
		}
		
		try {
			
			msg = CharSetUtil.toASCII(sb.toString());
			
		} catch (UnsupportedEncodingException e) {
			
			e.printStackTrace();
			Util.BIZ_CONF_DEBUG(TAG, "get ascall msg error~");
			msg = sb.toString();
		}
		
		return msg;
	}
	
	
}
